{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "             total_purchase_amt  total_redeem_amt\nreport_date                                      \n20130701               32488348           5525022\n20130702               29037390           2554548\n20130703               27270770           5953867\n20130704               18321185           6410729\n20130705               11648749           2763587\n...                         ...               ...\n20140827              302194801         468164147\n20140828              245082751         297893861\n20140829              267554713         273756380\n20140830              199708772         196374134\n20140831              275090213         292943033\n\n[427 rows x 2 columns]\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "# 导入一个数据处理专用包，pandas\n",
    "import pandas as pd\n",
    "# 读取用户申购赎回数据表\n",
    "user_balance= pd.read_csv('user_balance_table.csv',index_col='report_date')\n",
    "# 根据report_date，进行求和\n",
    "rawData = user_balance.groupby(by=['report_date']).sum()\n",
    "# 去除该方案不用的列，只选择本次有用的列\n",
    "purchaseRedeemData = rawData[['total_purchase_amt','total_redeem_amt']]\n",
    "# 打印purchaseRedeemData\n",
    "print(purchaseRedeemData)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "             total_purchase_amt\nreport_date                    \n2013-07-01             32488348\n2013-07-02             29037390\n2013-07-03             27270770\n2013-07-04             18321185\n2013-07-05             11648749\n...                         ...\n2014-08-27            302194801\n2014-08-28            245082751\n2014-08-29            267554713\n2014-08-30            199708772\n2014-08-31            275090213\n\n[427 rows x 1 columns]\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "# 只选择资金的流入数据\n",
    "purchaseTrainData = purchaseRedeemData[['total_purchase_amt']]\n",
    "# purchaseTrainData = purchaseRedeemData[['total_redeem_amt']]\n",
    "# 将数据转换成时间序列格式，以便于后期处理\n",
    "purchaseTrainData.index = pd.to_datetime(purchaseTrainData.index,format='%Y%m%d')\n",
    "# 打印资金的流入出数据\n",
    "print(purchaseTrainData)\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "data": {
      "text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x130463750>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 15
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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13HrrbfimmuuwbHHHlvV3zWIEmqFoom58sorsXr1aqxYsQJ33nknrr/+eqxcuRK9vb1YsGABjjvuOFx55ZW46qqr8I9//AMAkE6n8dBDDyGRSGDt2rU4++yzK+7d8+yzz2L16tVobW3FggULcNppp2HChAklH5PP58X+zzrrLBx//PG46667YFkWkskk+vv7sXbtWvzhD3/AjTfeiDPPPBN33nknzjnnHHzoQx/C5z73OQDAxRdfjF//+te44IILcNlll+GBBx7A1KlTMTAwAAD49a9/jTFjxuC5555DLpfDokWLcMopp4SWySUSCdx1113o7OxEb28vjjrqKLz//e8HALz++uu444478Jvf/AYLFizA73//ezzxxBP429/+hiuuuAJ33303vvCFL6C9vR0XXnhhZX+oMiihVih2EaWc766AXKuu65g0aRKOP/54PPfcc+js7PRtZxgGvvKVr2DFihXQdR2vvfZaxc9x8sknY/z48QCAD33oQ3jiiSfwgQ98oORjzjrrLPHzI488gt/97ncAINxwf38/Zs2ahcMOOwwAcMQRR2D9+vUAgNWrV+Piiy/GwMAAkskkTj3VWYh+0aJFOPfcc3HmmWfiQx/6EADgwQcfxIsvvog///nPAIDBwUGsXbs2VKg557jooovw2GOPQdM0bN68Gdu2bQMAzJo1C3PnzgUAzJ49GyeeeCIYY5g7d644rlqjhFqhUPi4+uqrMWnSJKxcuRK2bSORSFT82GDpGWMMkUgEtu0N5AZriNva2sruNx6Pi591XUcmkwEAnHvuubj77rsxb9483HzzzVi6dCkA4Prrr8czzzyDe+65B0cccQSWL18OzjmuueYaIealuO2229DT04Ply5cjGo1i5syZ4rjlY9E0TfyuaVrdcnY1mKhQNDEdHR0YHh4GABx77LG4/fbbYVkWenp68Nhjj2HhwoW+bQDHaU6ePBmapuGWW26BZVkVP99DDz2EHTt2IJPJ4O6778aiRYswadIkbN++HX19fcjlciJiCePEE0/EddddBwCwLAuDg4Mln294eBiTJ0+GYRi47bbbxO3r1q3DkUceicsuuwzd3d3YuHEjTj31VFx33XUwDAMA8Nprr4kcPsjg4CAmTpyIaDSKRx99FBs2FO1AGkrwPd1ZlFArFE3M+PHjsWjRIsyZMwdPP/00Dj30UMybNw8n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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "purchaseTrainData.sort_index().plot(title = 'purchase time series')"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "report_date\n2013-07-01     32488348\n2013-07-02     29037390\n2013-07-03     27270770\n2013-07-04     18321185\n2013-07-05     11648749\n                ...    \n2014-08-27    302194801\n2014-08-28    245082751\n2014-08-29    267554713\n2014-08-30    199708772\n2014-08-31    275090213\nName: total_purchase_amt, Length: 427, dtype: int64\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "purchaseTrainSeries = purchaseTrainData.dropna().total_purchase_amt\n",
    "# purchaseTrainSeries = purchaseTrainData.dropna().total_redeem_amt\n",
    "print(purchaseTrainSeries)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "   Augmented Dickey-Fuller Results   \n=====================================\nTest Statistic                 -2.812\nP-value                         0.057\nLags                                8\n-------------------------------------\n\nTrend: Constant\nCritical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)\nNull Hypothesis: The process contains a unit root.\nAlternative Hypothesis: The process is weakly stationary.\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "from arch.unitroot import ADF\n",
    "\n",
    "# 进行ADF单位根检验，并查看结果\n",
    "# 最大滞后阶数设为10\n",
    "# 防止使用的滞后阶数过多，导致 P-Value 偏低\n",
    "\n",
    "print(ADF(purchaseTrainSeries,max_lags=10).summary())\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "   Augmented Dickey-Fuller Results   \n=====================================\nTest Statistic                 -9.890\nP-value                         0.000\nLags                                7\n-------------------------------------\n\nTrend: Constant\nCritical Values: -3.45 (1%), -2.87 (5%), -2.57 (10%)\nNull Hypothesis: The process contains a unit root.\nAlternative Hypothesis: The process is weakly stationary.\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "purchaseTrainSeries_diff_1 = purchaseTrainSeries.diff().dropna()\n",
    "print(ADF(purchaseTrainSeries_diff_1,max_lags=10).summary())\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "0.0\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "from statsmodels.tsa import stattools\n",
    "\n",
    "LjungBox=stattools.q_stat(stattools.acf(purchaseTrainSeries),len(purchaseTrainSeries))\n",
    "print(LjungBox[1][-1])\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 2 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from statsmodels.graphics.tsaplots import *\n",
    "import matplotlib.pyplot as plt\n",
    "# 将画面一分为二\n",
    "# 第一个画自相关图\n",
    "# 第二个画偏自相关图\n",
    "\n",
    "\n",
    "# 将画面一分为二\n",
    "axe1=plt.subplot(121)\n",
    "axe2=plt.subplot(122)\n",
    "#在第一个画面中画出序列的自相关系数图 \n",
    "plot1=plot_acf(purchaseTrainSeries_diff_1,lags=30,ax=axe1)\n",
    "#在第二个画面中画出序列的偏自相关系数图\n",
    "plot2=plot_pacf(purchaseTrainSeries_diff_1,lags=30,ax=axe2)\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "p=0   q=0   aic=16841.460203357445\np=0   q=1   aic=16840.65879097423\np=0   q=2   aic=16768.588254717608\np=0   q=3   aic=16749.329831759434\n",
      "p=0   q=4   aic=16751.30918695687\np=1   q=0   aic=16841.9752200592\np=1   q=1   aic=16765.542397722962\np=1   q=2   aic=16753.108197276342\n",
      "p=1   q=3   aic=16751.31043599223\n",
      "p=1   q=4   aic=16747.349897647335\n",
      "p=1   q=5   aic=16748.65322730327\n",
      "p=1   q=6   aic=16748.649510872274\n",
      "p=1   q=7   aic=16737.502410440025\np=2   q=0   aic=16823.96105890665\np=2   q=1   aic=16748.624487466237\n",
      "p=2   q=2   aic=16748.745570131756\np=2   q=3   aic=16750.61328108457\n",
      "p=2   q=4   aic=16694.1091691445\n",
      "p=2   q=5   aic=16691.841441033826\n",
      "p=2   q=6   aic=16692.582391077074\n",
      "p=2   q=7   aic=16739.421124521665\np=3   q=0   aic=16806.12709020857\np=3   q=1   aic=16748.81160523667\n",
      "p=3   q=2   aic=16750.667923907065\n",
      "p=3   q=3   aic=16680.710558220406\n",
      "p=3   q=4   aic=16682.411342380707\n",
      "p=3   q=5   aic=16696.737577963024\n",
      "p=3   q=6   aic=16693.266301524673\n",
      "p=3   q=7   aic=16694.855476384688\np=4   q=0   aic=16791.80220928719\n",
      "p=4   q=1   aic=16750.561701412513\n",
      "p=4   q=2   aic=16752.56169375887\n",
      "p=4   q=3   aic=16737.08850329315\n",
      "p=4   q=4   aic=16682.15497014683\n",
      "p=4   q=5   aic=16693.970284611547\n",
      "p=4   q=6   aic=16699.291816165212\np=5   q=0   aic=16767.57633350123\n",
      "p=5   q=1   aic=16765.102407396473\n",
      "p=5   q=2   aic=16703.8029558572\n",
      "p=5   q=3   aic=16705.234829853525\n",
      "p=5   q=4   aic=16699.110041150572\n",
      "p=5   q=5   aic=16673.237970036178\n",
      "p=5   q=6   aic=16671.279638056054\np=6   q=0   aic=16759.995167207984\n",
      "p=6   q=1   aic=16750.61846501724\n",
      "p=6   q=2   aic=16704.941296422618\n",
      "p=6   q=3   aic=16705.030752961124\n",
      "p=6   q=4   aic=16689.853861188025\n",
      "p=6   q=5   aic=16674.120906027696\n",
      "p=7   q=0   aic=16750.405105346625\n",
      "p=7   q=1   aic=16749.432595690796\n",
      "p=7   q=2   aic=16750.427145723756\n",
      "p=7   q=3   aic=16733.670115151024\n",
      "p=7   q=5   aic=16669.64603395616\n",
      "p=8   q=0   aic=16748.345669215967\n",
      "p=8   q=1   aic=16718.18714974094\n",
      "p=8   q=2   aic=16703.77179763445\n",
      "p=8   q=3   aic=16655.56886564774\n",
      "p=8   q=4   aic=16653.320732457687\n",
      "p=8   q=5   aic=16654.935897132687\n",
      "p=9   q=0   aic=16750.208023008963\n",
      "p=9   q=1   aic=16718.165898228784\n",
      "p=9   q=2   aic=16711.199992981547\n",
      "p=9   q=3   aic=16713.18639140484\n",
      "p=9   q=4   aic=16655.15709267056\n",
      "p=9   q=5   aic=16665.95796261518\np_Dif=8   q_Dif=4   aicValue_Dif=16653.320732457687\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "from statsmodels.tsa import arima_model\n",
    "import sys\n",
    "\n",
    "# 忽略 ValueWarning\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "aicValue_Dif = sys.maxsize\n",
    "p_Dif = 0\n",
    "q_Dif = 0\n",
    "\n",
    "for p in range(0,10):\n",
    "    for q in range(0,10):\n",
    "        try:\n",
    "            model = arima_model.ARIMA(purchaseTrainSeries,order=(p,1,q)).fit()\n",
    "            aicValue = model.aic\n",
    "            print('p=' + str(p) + '   q=' + str(q) + '   aic=' + str(aicValue))\n",
    "            if aicValue <  aicValue_Dif:\n",
    "                aicValue_Dif = aicValue\n",
    "                p_Dif = p\n",
    "                q_Dif = q\n",
    "        except:\n",
    "            continue\n",
    "\n",
    "print('p_Dif=' + str(p_Dif) + '   q_Dif=' + str(q_Dif)  +  '   aicValue_Dif=' + str(aicValue_Dif))"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "outputs": [
    {
     "data": {
      "text/plain": "                                        0             1\nconst                      -574057.139553  1.713033e+06\nar.L1.D.total_purchase_amt       0.889514  1.354966e+00\nar.L2.D.total_purchase_amt      -0.870418 -4.231737e-02\nar.L3.D.total_purchase_amt      -0.855501 -6.567611e-02\nar.L4.D.total_purchase_amt       0.099214  5.247086e-01\nar.L5.D.total_purchase_amt      -0.305875  5.725320e-03\nar.L6.D.total_purchase_amt      -0.154534  1.375071e-01\nar.L7.D.total_purchase_amt       0.079106  3.607834e-01\nar.L8.D.total_purchase_amt      -0.387845 -1.969048e-01\nma.L1.D.total_purchase_amt      -1.770997 -1.307237e+00\nma.L2.D.total_purchase_amt       0.148321  1.165021e+00\nma.L3.D.total_purchase_amt       0.057548  1.051694e+00\nma.L4.D.total_purchase_amt      -0.761283 -3.484577e-01",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>0</th>\n      <th>1</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>const</td>\n      <td>-574057.139553</td>\n      <td>1.713033e+06</td>\n    </tr>\n    <tr>\n      <td>ar.L1.D.total_purchase_amt</td>\n      <td>0.889514</td>\n      <td>1.354966e+00</td>\n    </tr>\n    <tr>\n      <td>ar.L2.D.total_purchase_amt</td>\n      <td>-0.870418</td>\n      <td>-4.231737e-02</td>\n    </tr>\n    <tr>\n      <td>ar.L3.D.total_purchase_amt</td>\n      <td>-0.855501</td>\n      <td>-6.567611e-02</td>\n    </tr>\n    <tr>\n      <td>ar.L4.D.total_purchase_amt</td>\n      <td>0.099214</td>\n      <td>5.247086e-01</td>\n    </tr>\n    <tr>\n      <td>ar.L5.D.total_purchase_amt</td>\n      <td>-0.305875</td>\n      <td>5.725320e-03</td>\n    </tr>\n    <tr>\n      <td>ar.L6.D.total_purchase_amt</td>\n      <td>-0.154534</td>\n      <td>1.375071e-01</td>\n    </tr>\n    <tr>\n      <td>ar.L7.D.total_purchase_amt</td>\n      <td>0.079106</td>\n      <td>3.607834e-01</td>\n    </tr>\n    <tr>\n      <td>ar.L8.D.total_purchase_amt</td>\n      <td>-0.387845</td>\n      <td>-1.969048e-01</td>\n    </tr>\n    <tr>\n      <td>ma.L1.D.total_purchase_amt</td>\n      <td>-1.770997</td>\n      <td>-1.307237e+00</td>\n    </tr>\n    <tr>\n      <td>ma.L2.D.total_purchase_amt</td>\n      <td>0.148321</td>\n      <td>1.165021e+00</td>\n    </tr>\n    <tr>\n      <td>ma.L3.D.total_purchase_amt</td>\n      <td>0.057548</td>\n      <td>1.051694e+00</td>\n    </tr>\n    <tr>\n      <td>ma.L4.D.total_purchase_amt</td>\n      <td>-0.761283</td>\n      <td>-3.484577e-01</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 22
    }
   ],
   "source": [
    "model = arima_model.ARIMA(purchaseTrainSeries,order=(p_Dif,1,q_Dif)).fit()\n",
    "model.conf_int()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "0.8224153297170889\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "from statsmodels.stats.diagnostic import acorr_ljungbox\n",
    "\n",
    "LjungBox = acorr_ljungbox(model.resid,lags=7)\n",
    "print(LjungBox[1][-1])"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "outputs": [
    {
     "data": {
      "text/plain": "array([3.20602370e+08, 3.29064069e+08, 3.08668266e+08, 2.56219469e+08,\n       2.28279911e+08, 2.04336627e+08, 2.43177176e+08, 2.85565066e+08,\n       3.14726712e+08, 3.00835833e+08, 2.63196878e+08, 2.31059012e+08,\n       2.24282164e+08, 2.55558627e+08, 2.97021396e+08, 3.22568802e+08,\n       3.09765823e+08, 2.71878537e+08, 2.36077189e+08, 2.28880169e+08,\n       2.55678322e+08, 2.95792569e+08, 3.20424581e+08, 3.10989216e+08,\n       2.76244566e+08, 2.42376573e+08, 2.35297597e+08, 2.60235728e+08,\n       2.98813755e+08, 3.22812012e+08])"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 24
    }
   ],
   "source": [
    "# 模型预测\n",
    "\n",
    "model.forecast(30)[0]\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}